#ifndef SEPARATEDCONVOLUTION_H
#define SEPARATEDCONVOLUTION_H

#ifndef OPENCVSTL
#define OPENCVSTL
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
#endif

int separateKernel(const Mat_<float> kernel, Mat_<float>& kernelY,Mat_<float>& kernelX);
int separatedConvolution(const Mat_<uchar>& imgIn , Mat_<uchar>& imgOut,const Mat_<float>& kernelY, const Mat_<float>& kernelX );
int separatedConvolution(const Mat_<uchar>& imgIn , Mat_<uchar>& imgOut, const Mat_<float> &kernel);
int separatedConvWithPointers(uchar* imgIn , int img_rows, int img_cols, uchar* imgOut,float* kernelY,float* kernelX, int kern_lines);
int separatedConvWithPointers(const Mat_<uchar>& inImg , Mat_<uchar>& outImg, const Mat_<float> &kernel);
int testSeparatedConvolution();

#endif // SEPARATEDCONVOLUTION_H